import axios from "axios";

/**
 * 登录功能
 * @param {object} loginInfo 信息对象
 */
export async function login(loginInfo) {
  // 接口地址 post http://study.yuanjin.tech/api/user/login，使用了代理解决浏览器跨域问题
  let resp = await axios.post("/api/user/login", loginInfo);
  let token = resp.headers.authorization; // 获取服务器的令牌
  if (token) {
    // 判断 token 是否存在并保存到浏览器的内存中
    localStorage.setItem("token", token);
  }
  return resp.data;
}

/**
 * 使用保存在浏览器中的 token 换取已登录的用户信息
 */
export async function accessConfig() {
  // get http://study.yuanjin.tech/api/user/whoami
  // authorization: bearer token xxxxx

  let token = localStorage.getItem("token");
  if (!token) {
    // 用户从未在此设备登录过，或已过期
    return null;
  }
  // 利用 token 换取用户信息
  let resp = await axios.get("/api/user/whoami", {
    headers: {
      authorization: `bearer ${token}`,
    },
  });
  return resp.data; // 服务器返回的用户信息
}

/**
 * 通过清除令牌注销用户
 */
export function logout() {
  localStorage.removeItem("token");
}

/**
 * 注册用户
 * @param {object} userInfo
 */
export async function logup(userInfo) {
  // post http://study.yuanjin.tech/api/user/reg
  let resp = await axios.post("/api/user/reg", userInfo);
  return resp.data;
}
